﻿using System;

namespace SharpCompress.Crypto;

public class KeyParameter : ICipherParameters
{
    private readonly byte[] key;

    public KeyParameter(byte[] key)
    {
        if (key is null)
        {
            throw new ArgumentNullException(nameof(key));
        }

        this.key = (byte[])key.Clone();
    }

    public KeyParameter(byte[] key, int keyOff, int keyLen)
    {
        if (key is null)
        {
            throw new ArgumentNullException(nameof(key));
        }
        if (keyOff < 0 || keyOff > key.Length)
        {
            throw new ArgumentOutOfRangeException(nameof(keyOff));
        }
        if (keyLen < 0 || (keyOff + keyLen) > key.Length)
        {
            throw new ArgumentOutOfRangeException(nameof(keyLen));
        }

        this.key = new byte[keyLen];
        Array.Copy(key, keyOff, this.key, 0, keyLen);
    }

    public byte[] GetKey() => (byte[])key.Clone();
}
